索引:系统类说明 内容 Java beans GenerateModel类 PO类 VO类 Callouts类 ModelValidationEngine 类 参考【ADempiere开发手册】 The ADempiere Bazaar’s Sourcecode Expose 2/5/2009 Kevin D.J White, Mario Calderon, Norbert Wessel and others Java beans GenerateModel生成的X_files都放在 org.compiere.model 包内,这个包放置所有 javabean 类和业务逻辑类。 都是 POJOs( (Plain Old Java Objects, 简单洁净Java对象,也称Plain Ordinary Java Objects,表示一个数据集合。), 每个业务对象对应一个 java bean,bean 连接源代码与数据库数据,帮助开发者避免直接访问数据。都放在 org.compiere.model 包内,这个包放置所有 javabean 类和业务逻辑类,所有基类和 bean 都是同一个包的一部分,这样可以通过调用构造器创建一个对象。Beans 和 PO 一起实现持久化,Beans 保存数据,PO 提供持久化机制支持。 java bean 类声明,如:public class X_C_Invoice extends PO, 其方法initPO(),调用链上一个 PO 构造器调用(PO(Properties ctx,int ID,String trxName,ResultSet rs)) GenerateModel类 包 package org.adempiere.util public class GenerateModel Adempiere 持久层主要类是 PO.java,在这个抽象类中定义了 load(),save() ,delete(),get_ID()等方法。 每个持久对象(数据库中的一个表)都是 PO.java 的扩展 X_*类(定义在应用程序字典 AD 中的所有表),X_*类的大多数方法只是 setter 与 getter ADempiere 不只是生成 X_*类的代码,还可以生成 X_*类实现的 I_*接口的代码。 当应用程序字典中的数据库表变化时 X_files 一定要重新生成。 GenerateModel.main()方法生成 java beans(X_xxxxxx.java 如 e.g.e.g.X_C_Invoice.Java)。 main()方法从 AD_Table 表中读取数据表数据,并为每个表的每个列生成 get-与 set-代码。 PO类 org.compiere.model.PO 持久化引擎(Persistency-Engine),PO 持久化类提供 DB 迁移方法同时调用触发器和模型有效性验证 (Triggers 与 model validators)。 public abstract class PO implements Serializable, Comparator, Evaluatee Serializable 对象流输出 Comparator PO 实现了 compare()与 equals()方法 Evaluate 实现 get_ValueAsString()方法,此方法被 org.compiere.util.Evaluator.evaluateLogicTuple()调用,tupels @xxxx@定义在应用程序字典(AD)中,可评估。 类继承:功能类如 MInvoice 继承 X_C_Invoice,X_C_Invoice 类继承 PO ● public class Minvoice extends X_C_Invoice implements DocAction ● public class X_C_Invoice extends PO VO类 目前我们团队,统一规范,在service和dao之间使用PO传参,而在service和controller之间使用VO传参,VO中增加了toEntity和fromEntity方法用于VO转PO和PO转VO的处理,整个统一下来代码比较规范,适应了后续的VO或PO的调整,也不用纠结是否要增加VO的问题。 当然这样做有些代价,有些地方VO和PO基本相同,增加了VO类和VO与PO之间的转换消耗,不过这点代价我们认为还是值得的,VO类以及toEntity和fromEntity方法都可以通过代码生成工具生成出来 从职责单一原则上考虑,VO和PO的规范也符合这一原则,前端或后端的单一变化不会影响到另外一个的变化。 Callouts类 ModelValidationEngine 类 Package org.compiere.model public class ModelValidationEngine